package 语法

def list  = new ArrayList();
//groovy的list的定义，和java的数组定义一样
def list1 = [1,2,3,4,5,6]
println list1.class

//groovy定义数组,使用关键字as和强类型两种方式
def array = [1,2,3,4] as int[]
int[] array2 = [1,2,3,4]
println "--------------------------------------------"

//对list进行操作
def sortList = [1,9,-3,5,4,6]
//自定义一个排序规则，绝对值大小的排序，使用的Comparator
Comparator mc = {a,b -> a==b?0:Math.abs(a)<Math.abs(b)?-1:1}
Collections.sort(sortList,mc)
println sortList
println "--------------------------------------------"

//groovy自带的排序，可以直接使用
def sortList1 = [1,9,-3,5,4,6]
sortList1.sort()
println sortList1
println "--------------------------------------------"

//groovy自定义的排序，使用闭包
def sortList2 = [1,9,-3,5,4,6]
def sortList3 = [1,9,-3,5,4,6]
def sort = sortList2.sort {
    a, b -> a == b ? 0 : Math.abs(a) < Math.abs(b) ? -1 : 1
}
println sortList2
println sort == sortList2
println sort == sortList3
println "--sortList2----sortList2------sortList2-------------------"

/**
 * 对字符串列表的长度进行排序
 */
def sortStringList = ['abc','z','hello','java','groovy']
sortStringList.sort{
    it -> return it.size()
}
println sortStringList
println "--------------------------------------------"


/**
 * find方法只是查找一个，然后返回
 * findAll方法只是查找所以，然后一个list
 * any方法只要有一个满足条件就返回true
 * every方法需要所有的条件都满足才能返回true
 * min获取最小值
 * max获取最大值
 * min，max可以使用闭包，定义自己的规则查找最大最小值
 * count统计数组有多少于元素,使用闭包就是自定义满足条件的有多少元素
 */
def findList = [-3,9,6,2,-7,1,5]
def find = findList.find {
    a -> a > 0
}
println find
def findAll = findList.findAll {
    a -> a > 0
}
println findAll
def any = findList.any {
    a -> a > 0
}
println any
def every = findList.every {
    a -> a > 0
}
println every
//这个并不是直接取数组的最小值，这个是取绝对值的最小值
def min = findList.min{
    return Math.abs(it)
}
println min
def max = findList.max()
println max
//统计条件，满足条件的有多少个，直接使用是统计数组有多少于元素
def count = findList.count {
    return it>0
}
println count
println "--------------------------------------------"





